package it.javaweb.actions;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

import it.javaweb.beans.Utente;

import org.springframework.validation.Errors;
import org.springframework.validation.ValidationUtils;
import org.springframework.validation.Validator;

/**
 * Classe di validazione della form di login
 * @author stefano
 */
public class LoginValidator implements Validator {

	@Override
	public boolean supports(Class clazz) {
		return Utente.class.isAssignableFrom(clazz);
	}

	@Override
	public void validate(Object command, Errors errors) {
		Utente u = (Utente) command;

		ValidationUtils.rejectIfEmpty(errors, "password", "password.required", "Password cannot be empty");
		ValidationUtils.rejectIfEmpty(errors, "login", "login.required", "Login name cannot be empty");
		
		// se ho gia' trovato errori basta cosi'
		if ( !errors.hasErrors() ) {
			// la password deve iniziare con una lettera, non con un numero
			Pattern startsWithLetterPattern = Pattern.compile("^[a-zA-Z].*$");
			Matcher startsWithLetterMatcher = startsWithLetterPattern.matcher( u.getPassword() );
			if ( !startsWithLetterMatcher.matches() ) {
				// devo tornare un errore
				errors.rejectValue("password", "password.noStartsWithLetter", "Password must start with a letter");
			}
		}
		
	}

}
